{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import json"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'author': '王維', 'paragraphs': ['古墓成蒼嶺，幽宮象紫臺。', '星辰七曜隔，河漢九泉開。', '有海人寧渡，無春雁不廻。', '更聞松韻切，疑是大夫哀。'], 'strains': ['仄仄平平仄，平平仄仄平。', '平平仄仄仄，平仄仄平平。', '仄仄平平仄，平平仄仄平。', '平平平仄仄，平仄仄平平。'], 'title': '過始皇墓'}\n",
      "<class 'dict'>\n"
     ]
    }
   ],
   "source": [
    "poems=[]\n",
    "with open(\"data/poem.json\",\"r\",encoding='utf-8') as load_file:\n",
    "    poems=json.load(load_file)\n",
    "    print(poems[42])\n",
    "    print(type(poems[42]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "poems_processed=[]\n",
    "#取出所有的五言诗\n",
    "for poem in poems:\n",
    "    for sentence in poem['paragraphs']:\n",
    "        if '，' not in sentence:\n",
    "            continue\n",
    "        if not len(sentence)==12:\n",
    "            continue\n",
    "        s1,s2=sentence.split('，')\n",
    "        poems_processed.append(s1)\n",
    "        poems_processed.append(s2[:-1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['畫樓吹笛妓',\n",
       " '金椀酒家胡',\n",
       " '錦石稱貞女',\n",
       " '青松學大夫',\n",
       " '脫貂貰桂醑',\n",
       " '射雁與山廚',\n",
       " '聞道高陽會',\n",
       " '愚公谷正愚',\n",
       " '巖壑轉微逕',\n",
       " '雲林隱法堂',\n",
       " '羽人飛奏樂',\n",
       " '天女跪焚香',\n",
       " '竹外峰偏曙',\n",
       " '藤陰水更涼',\n",
       " '欲知禪坐久',\n",
       " '行路長春芳',\n",
       " '不知香積寺',\n",
       " '數里入雲峰',\n",
       " '古木無人逕',\n",
       " '深山何處鐘']"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poems_processed[:20]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "import jieba\n",
    "import itertools\n",
    "from collections import Counter"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'接下来，莫沃维奇和关一帆又发现了一件令他们激动的事情：他们能看到星空，在各个方向上都能看到。他们清楚地看见，在宇宙的永恒之夜中，银河系在灿烂地延伸着。他们知道自己此时仍身处飞船中，三人都没有穿宇宙服，都在呼吸着飞船中的空气，但在第四个维度上，他们暴露在太空中。作为宇航员，三个人都曾经历过无数次太空行走，但从未感觉到自己在太空中暴露得这样彻底。以往太空行走时，他们至少包裹在宇宙服中，而现在，没有任何东西挡在他们和宇宙之间，周围这展现出无限细节的飞船对星空没有丝毫遮挡，在第四维度上，整个宇宙与飞船也是并列的。'"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "text= '接下来，莫沃维奇和关一帆又发现了一件令他们激动的事情：他们能看到星空，在各个方向上都能看到。他们清楚地看见，在宇宙的永恒之夜中，银河系在灿烂地延伸着。他们知道自己此时仍身处飞船中，三人都没有穿宇宙服，都在呼吸着飞船中的空气，但在第四个维度上，他们暴露在太空中。作为宇航员，三个人都曾经历过无数次太空行走，但从未感觉到自己在太空中暴露得这样彻底。以往太空行走时，他们至少包裹在宇宙服中，而现在，没有任何东西挡在他们和宇宙之间，周围这展现出无限细节的飞船对星空没有丝毫遮挡，在第四维度上，整个宇宙与飞船也是并列的。'\n",
    "text"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'接下来/，/莫沃/维奇/和/关一帆/又/发现/了/一件/令/他们/激动/的/事情/：/他们/能/看到/星空/，/在/各个/方向/上/都/能/看到/。/他们/清楚/地/看见/，/在/宇宙/的/永恒/之/夜中/，/银河系/在/灿烂/地/延伸/着/。/他们/知道/自己/此时/仍/身处/飞船/中/，/三人/都/没有/穿/宇宙服/，/都/在/呼吸/着/飞船/中/的/空气/，/但/在/第四个/维度/上/，/他们/暴露/在/太空/中/。/作为/宇航员/，/三个/人/都/曾/经历/过/无数次/太空行走/，/但/从未/感觉/到/自己/在/太空/中/暴露/得/这样/彻底/。/以往/太空行走/时/，/他们/至少/包裹/在/宇宙服/中/，/而/现在/，/没有/任何/东西/挡/在/他们/和/宇宙/之间/，/周围/这/展现出/无限/细节/的/飞船/对/星空/没有/丝毫/遮挡/，/在/第四/维度/上/，/整个/宇宙/与/飞船/也/是/并列/的/。'"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "text_cut=jieba.cut(text)\n",
    "text_cut='/'.join(text_cut)\n",
    "text_cut\n",
    "# print(type(text_cut))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "jieba.suggest_freq('莫沃维奇',True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'接下来/，/莫沃维奇/和/关一帆/又/发现/了/一件/令/他们/激动/的/事情/：/他们/能/看到/星空/，/在/各个/方向/上/都/能/看到/。/他们/清楚/地/看见/，/在/宇宙/的/永恒/之/夜中/，/银河系/在/灿烂/地/延伸/着/。/他们/知道/自己/此时/仍/身处/飞船/中/，/三人/都/没有/穿/宇宙服/，/都/在/呼吸/着/飞船/中/的/空气/，/但/在/第四个/维度/上/，/他们/暴露/在/太空/中/。/作为/宇航员/，/三个/人/都/曾/经历/过/无数次/太空行走/，/但/从未/感觉/到/自己/在/太空/中/暴露/得/这样/彻底/。/以往/太空行走/时/，/他们/至少/包裹/在/宇宙服/中/，/而/现在/，/没有/任何/东西/挡/在/他们/和/宇宙/之间/，/周围/这/展现出/无限/细节/的/飞船/对/星空/没有/丝毫/遮挡/，/在/第四/维度/上/，/整个/宇宙/与/飞船/也/是/并列/的/。'"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "text_cut=jieba.cut(text)\n",
    "text_cut='/'.join(text_cut)\n",
    "text_cut"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "#建立词频词典\n",
    "def build_vocab(text,vocab_lim):\n",
    "    word_cnt=Counter(text)\n",
    "    vocab_inv=[x[0] for x in word_cnt.most_common(vocab_lim)]\n",
    "    vocab={x:index for index,x in enumerate(vocab_inv)}\n",
    "    return vocab,vocab_inv"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['接下来',\n",
       " '，',\n",
       " '莫沃维奇',\n",
       " '和',\n",
       " '关一帆',\n",
       " '又',\n",
       " '发现',\n",
       " '了',\n",
       " '一件',\n",
       " '令',\n",
       " '他们',\n",
       " '激动',\n",
       " '的',\n",
       " '事情',\n",
       " '：',\n",
       " '他们',\n",
       " '能',\n",
       " '看到',\n",
       " '星空',\n",
       " '，',\n",
       " '在',\n",
       " '各个',\n",
       " '方向',\n",
       " '上',\n",
       " '都',\n",
       " '能',\n",
       " '看到',\n",
       " '。',\n",
       " '他们',\n",
       " '清楚',\n",
       " '地',\n",
       " '看见',\n",
       " '，',\n",
       " '在',\n",
       " '宇宙',\n",
       " '的',\n",
       " '永恒',\n",
       " '之',\n",
       " '夜中',\n",
       " '，',\n",
       " '银河系',\n",
       " '在',\n",
       " '灿烂',\n",
       " '地',\n",
       " '延伸',\n",
       " '着',\n",
       " '。',\n",
       " '他们',\n",
       " '知道',\n",
       " '自己',\n",
       " '此时',\n",
       " '仍',\n",
       " '身处',\n",
       " '飞船',\n",
       " '中',\n",
       " '，',\n",
       " '三人',\n",
       " '都',\n",
       " '没有',\n",
       " '穿',\n",
       " '宇宙服',\n",
       " '，',\n",
       " '都',\n",
       " '在',\n",
       " '呼吸',\n",
       " '着',\n",
       " '飞船',\n",
       " '中',\n",
       " '的',\n",
       " '空气',\n",
       " '，',\n",
       " '但',\n",
       " '在',\n",
       " '第四个',\n",
       " '维度',\n",
       " '上',\n",
       " '，',\n",
       " '他们',\n",
       " '暴露',\n",
       " '在',\n",
       " '太空',\n",
       " '中',\n",
       " '。',\n",
       " '作为',\n",
       " '宇航员',\n",
       " '，',\n",
       " '三个',\n",
       " '人',\n",
       " '都',\n",
       " '曾',\n",
       " '经历',\n",
       " '过',\n",
       " '无数次',\n",
       " '太空行走',\n",
       " '，',\n",
       " '但',\n",
       " '从未',\n",
       " '感觉',\n",
       " '到',\n",
       " '自己',\n",
       " '在',\n",
       " '太空',\n",
       " '中',\n",
       " '暴露',\n",
       " '得',\n",
       " '这样',\n",
       " '彻底',\n",
       " '。',\n",
       " '以往',\n",
       " '太空行走',\n",
       " '时',\n",
       " '，',\n",
       " '他们',\n",
       " '至少',\n",
       " '包裹',\n",
       " '在',\n",
       " '宇宙服',\n",
       " '中',\n",
       " '，',\n",
       " '而',\n",
       " '现在',\n",
       " '，',\n",
       " '没有',\n",
       " '任何',\n",
       " '东西',\n",
       " '挡',\n",
       " '在',\n",
       " '他们',\n",
       " '和',\n",
       " '宇宙',\n",
       " '之间',\n",
       " '，',\n",
       " '周围',\n",
       " '这',\n",
       " '展现出',\n",
       " '无限',\n",
       " '细节',\n",
       " '的',\n",
       " '飞船',\n",
       " '对',\n",
       " '星空',\n",
       " '没有',\n",
       " '丝毫',\n",
       " '遮挡',\n",
       " '，',\n",
       " '在',\n",
       " '第四',\n",
       " '维度',\n",
       " '上',\n",
       " '，',\n",
       " '整个',\n",
       " '宇宙',\n",
       " '与',\n",
       " '飞船',\n",
       " '也',\n",
       " '是',\n",
       " '并列',\n",
       " '的',\n",
       " '。']"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "text_cut_list=text_cut.split('/')\n",
    "text_cut_list"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'，': 0,\n",
       " '在': 1,\n",
       " '他们': 2,\n",
       " '的': 3,\n",
       " '。': 4,\n",
       " '中': 5,\n",
       " '都': 6,\n",
       " '飞船': 7,\n",
       " '上': 8,\n",
       " '宇宙': 9,\n",
       " '没有': 10,\n",
       " '和': 11,\n",
       " '能': 12,\n",
       " '看到': 13,\n",
       " '星空': 14,\n",
       " '地': 15,\n",
       " '着': 16,\n",
       " '自己': 17,\n",
       " '宇宙服': 18,\n",
       " '但': 19,\n",
       " '维度': 20,\n",
       " '暴露': 21,\n",
       " '太空': 22,\n",
       " '太空行走': 23,\n",
       " '接下来': 24,\n",
       " '莫沃维奇': 25,\n",
       " '关一帆': 26,\n",
       " '又': 27,\n",
       " '发现': 28,\n",
       " '了': 29,\n",
       " '一件': 30,\n",
       " '令': 31,\n",
       " '激动': 32,\n",
       " '事情': 33,\n",
       " '：': 34,\n",
       " '各个': 35,\n",
       " '方向': 36,\n",
       " '清楚': 37,\n",
       " '看见': 38,\n",
       " '永恒': 39,\n",
       " '之': 40,\n",
       " '夜中': 41,\n",
       " '银河系': 42,\n",
       " '灿烂': 43,\n",
       " '延伸': 44,\n",
       " '知道': 45,\n",
       " '此时': 46,\n",
       " '仍': 47,\n",
       " '身处': 48,\n",
       " '三人': 49,\n",
       " '穿': 50,\n",
       " '呼吸': 51,\n",
       " '空气': 52,\n",
       " '第四个': 53,\n",
       " '作为': 54,\n",
       " '宇航员': 55,\n",
       " '三个': 56,\n",
       " '人': 57,\n",
       " '曾': 58,\n",
       " '经历': 59,\n",
       " '过': 60,\n",
       " '无数次': 61,\n",
       " '从未': 62,\n",
       " '感觉': 63,\n",
       " '到': 64,\n",
       " '得': 65,\n",
       " '这样': 66,\n",
       " '彻底': 67,\n",
       " '以往': 68,\n",
       " '时': 69,\n",
       " '至少': 70,\n",
       " '包裹': 71,\n",
       " '而': 72,\n",
       " '现在': 73,\n",
       " '任何': 74,\n",
       " '东西': 75,\n",
       " '挡': 76,\n",
       " '之间': 77,\n",
       " '周围': 78,\n",
       " '这': 79,\n",
       " '展现出': 80,\n",
       " '无限': 81,\n",
       " '细节': 82,\n",
       " '对': 83,\n",
       " '丝毫': 84,\n",
       " '遮挡': 85,\n",
       " '第四': 86,\n",
       " '整个': 87,\n",
       " '与': 88,\n",
       " '也': 89,\n",
       " '是': 90,\n",
       " '并列': 91}"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "vocab,vocab_inv=build_vocab(text_cut_list,4000)\n",
    "vocab"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[24,\n",
       " 0,\n",
       " 25,\n",
       " 11,\n",
       " 26,\n",
       " 27,\n",
       " 28,\n",
       " 29,\n",
       " 30,\n",
       " 31,\n",
       " 2,\n",
       " 32,\n",
       " 3,\n",
       " 33,\n",
       " 34,\n",
       " 2,\n",
       " 12,\n",
       " 13,\n",
       " 14,\n",
       " 0,\n",
       " 1,\n",
       " 35,\n",
       " 36,\n",
       " 8,\n",
       " 6,\n",
       " 12,\n",
       " 13,\n",
       " 4,\n",
       " 2,\n",
       " 37,\n",
       " 15,\n",
       " 38,\n",
       " 0,\n",
       " 1,\n",
       " 9,\n",
       " 3,\n",
       " 39,\n",
       " 40,\n",
       " 41,\n",
       " 0,\n",
       " 42,\n",
       " 1,\n",
       " 43,\n",
       " 15,\n",
       " 44,\n",
       " 16,\n",
       " 4,\n",
       " 2,\n",
       " 45,\n",
       " 17,\n",
       " 46,\n",
       " 47,\n",
       " 48,\n",
       " 7,\n",
       " 5,\n",
       " 0,\n",
       " 49,\n",
       " 6,\n",
       " 10,\n",
       " 50,\n",
       " 18,\n",
       " 0,\n",
       " 6,\n",
       " 1,\n",
       " 51,\n",
       " 16,\n",
       " 7,\n",
       " 5,\n",
       " 3,\n",
       " 52,\n",
       " 0,\n",
       " 19,\n",
       " 1,\n",
       " 53,\n",
       " 20,\n",
       " 8,\n",
       " 0,\n",
       " 2,\n",
       " 21,\n",
       " 1,\n",
       " 22,\n",
       " 5,\n",
       " 4,\n",
       " 54,\n",
       " 55,\n",
       " 0,\n",
       " 56,\n",
       " 57,\n",
       " 6,\n",
       " 58,\n",
       " 59,\n",
       " 60,\n",
       " 61,\n",
       " 23,\n",
       " 0,\n",
       " 19,\n",
       " 62,\n",
       " 63,\n",
       " 64,\n",
       " 17,\n",
       " 1,\n",
       " 22,\n",
       " 5,\n",
       " 21,\n",
       " 65,\n",
       " 66,\n",
       " 67,\n",
       " 4,\n",
       " 68,\n",
       " 23,\n",
       " 69,\n",
       " 0,\n",
       " 2,\n",
       " 70,\n",
       " 71,\n",
       " 1,\n",
       " 18,\n",
       " 5,\n",
       " 0,\n",
       " 72,\n",
       " 73,\n",
       " 0,\n",
       " 10,\n",
       " 74,\n",
       " 75,\n",
       " 76,\n",
       " 1,\n",
       " 2,\n",
       " 11,\n",
       " 9,\n",
       " 77,\n",
       " 0,\n",
       " 78,\n",
       " 79,\n",
       " 80,\n",
       " 81,\n",
       " 82,\n",
       " 3,\n",
       " 7,\n",
       " 83,\n",
       " 14,\n",
       " 10,\n",
       " 84,\n",
       " 85,\n",
       " 0,\n",
       " 1,\n",
       " 86,\n",
       " 20,\n",
       " 8,\n",
       " 0,\n",
       " 87,\n",
       " 9,\n",
       " 88,\n",
       " 7,\n",
       " 89,\n",
       " 90,\n",
       " 91,\n",
       " 3,\n",
       " 4]"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#将文本转换成词频数字表示的向量\n",
    "num_text_cut=[vocab[word] for word in text_cut_list]\n",
    "num_text_cut"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
